/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaDecDistribucionException;
import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaDecDistribucionRuntimeException;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecDistribucionService;
import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.model.FeriaDecDistribucion;

/**
 * @author Usuario
 * 
 */
public class FeriaDecDistribucionController extends BaseController implements
		Serializable {

	/**
	 * generated serial version
	 */
	private static final long serialVersionUID = -3285110767384990403L;

	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public FeriaDecDistribucionController() {
		this.feriaDecDistribucionListModel = new ListDataModel();		
	}

	/** bean para el manejo del formulario de busqueda FeriaDecDistribucion */
	public FeriaDecDistribucion feriaDecDistribucionSearch = new FeriaDecDistribucion();

	/** Objeto contenedor del listado de FeriaDecDistribucion luego de una consulta. */
	private DataModel feriaDecDistribucionListModel;

	/** bean para el manejo del formulario de creacion/edicion. FeriaDecDistribucion */
	private FeriaDecDistribucion feriaDecDistribucion = new FeriaDecDistribucion();

	/** instancia de servicio feriaDecDistribucionService */
	private IFeriaDecDistribucionService feriaDecDistribucionService;

	// --------------------------------------------------------------------
	// --- metodos para atender acciones init()
	// --------------------------------------------------------------------

	/**
	 * 
	 * @return String
	 */
	public String searchFeriaDecDistribucionByKey() {
		String msg = "";
		try {
			List valores = null;
			valores = getFeriaDecDistribucionService().load(1, 10,
					this.feriaDecDistribucionSearch);
			this.feriaDecDistribucionListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaDecDistribucionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaDecDistribucionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIA_DEC_DISTRIBUCION_SEARCH_VIEW;
	}
	
	/**
	 * 
	 * @return String
	 */
	public String searchFeriaDecembrinaFormByAnio() {
		String msg = "";
		try {
			List valores = null;
			valores = getFeriaDecDistribucionService().loadByAnio(1, 10,
					this.feriaDecDistribucionSearch);
			this.feriaDecDistribucionListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaDecDistribucionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaDecDistribucionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}
	
	public String searchFeriaDecembrinaFormByAnio(IFeriaDecDistribucionService service) {
		String msg = "";
		try {
			List valores = null;
			valores = service.loadByAnio(1, 10,
					this.feriaDecDistribucionSearch);
			this.feriaDecDistribucionListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaDecDistribucionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaDecDistribucionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}


	/**
	 * 
	 * @return
	 */
	public String create() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaDecDistribucion.getId().longValue() == 0L) {
				feriaDecDistribucion.setIdTipologia(new Long(feriaDecDistribucion.getIdTipologiaStr()));
				feriaDecDistribucion.setIdAmoblamiento(new Long(feriaDecDistribucion.getIdAmoblamientoStr()));
				feriaDecDistribucion.setIdTipoVenta(new Long(feriaDecDistribucion.getIdTipoVentaStr()));
				feriaDecDistribucion.setCantidad(new Long(feriaDecDistribucion.getCantidadStr()));
				getFeriaDecDistribucionService().insert(this.feriaDecDistribucion);
				msg = AppConstants.SUCCESS_CREATE;
			}
		} catch (FeriaDecDistribucionException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaDecDistribucionRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- feriaDecDistribucion " + msg, null, null);
		return AppConstants.FERIA_DEC_DISTRIBUCION_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String update() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaDecDistribucion.getId().longValue() != 0L) {
				feriaDecDistribucion.setIdTipologia(new Long(feriaDecDistribucion.getIdTipologiaStr()));
				feriaDecDistribucion.setIdAmoblamiento(new Long(feriaDecDistribucion.getIdAmoblamientoStr()));
				feriaDecDistribucion.setIdTipoVenta(new Long(feriaDecDistribucion.getIdTipoVentaStr()));
				feriaDecDistribucion.setCantidad(new Long(feriaDecDistribucion.getCantidadStr()));
				getFeriaDecDistribucionService().update(this.feriaDecDistribucion);
				msg = AppConstants.SUCCESS_UPDATE;
			}
		} catch (FeriaDecDistribucionException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaDecDistribucionRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Valor Tipo Maestra " + msg, null, null);
		return AppConstants.FERIA_DEC_DISTRIBUCION_SEARCH_VIEW;
	}

	// --------------------------------------------------------------------
	// --- metodos para atender acciones end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public String createFeriaDecDistribucion() {
		feriaDecDistribucion = new FeriaDecDistribucion();
		feriaDecDistribucion.setId(new Long(0L));
		feriaDecDistribucion.setCodigo("");
		feriaDecDistribucion.setIdFeriaDecembrinaForm(feriaDecDistribucionSearch.getIdFeriaDecembrinaForm());
		feriaDecDistribucion.setAgno(feriaDecDistribucionSearch.getAgno());
	//	feriaDecDistribucion.setValor("");
	//	feriaDecDistribucion.setActivo("N");
		return AppConstants.FERIA_DEC_DISTRIBUCION_CREATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String updateFeriaDecDistribucion() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecDistribucionDataIndex = (String) params
				.get("feriaDecDistribucionDataIndex");
		this.feriaDecDistribucion = (FeriaDecDistribucion) ((List) this.feriaDecDistribucionListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecDistribucionDataIndex));
		return AppConstants.FERIA_DEC_DISTRIBUCION_UPDATE_VIEW;
	}
	
	public String cancelFeriaDecDistribucionOpcion() {		
		return AppConstants.FERIA_DEC_DISTRIBUCION_MENU_VIEW;
	}
	

	/**
	 * 
	 * @return
	 */
	public String cancelFeriaDecDistribucion() {
		return AppConstants.FERIA_DEC_DISTRIBUCION_SEARCH_VIEW;
	}

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- getters and setters init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public FeriaDecDistribucion getFeriaDecDistribucionSearch() {
		return feriaDecDistribucionSearch;
	}

	/**
	 * 
	 * @param feriaDecDistribucionSearch
	 */
	public void setferiaDecDistribucionSearch(FeriaDecDistribucion feriaDecDistribucionSearch) {
		this.feriaDecDistribucionSearch = feriaDecDistribucionSearch;
	}

	/**
	 * 
	 * @return
	 */
	public DataModel getferiaDecDistribucionListModel() {
		return feriaDecDistribucionListModel;
	}

	/**
	 * 
	 * @param feriaDecDistribucionListModel
	 */
	public void setferiaDecDistribucionListModel(DataModel feriaDecDistribucionListModel) {
		this.feriaDecDistribucionListModel = feriaDecDistribucionListModel;
	}

	/**
	 * 
	 * @return
	 */
	public FeriaDecDistribucion getFeriaDecDistribucion() {
		return feriaDecDistribucion;
	}

	/**
	 * 
	 * @param feriaDecDistribucion
	 */
	public void setferiaDecDistribucion(FeriaDecDistribucion feriaDecDistribucion) {
		this.feriaDecDistribucion = feriaDecDistribucion;
	}

	/**
	 * obtencion del servicio feriaDecDistribucionService
	 * 
	 * @return
	 */
	public IFeriaDecDistribucionService getFeriaDecDistribucionService() {
		return feriaDecDistribucionService;
	}

	/**
	 * establecimiento del servicio feriaDecDistribucionService, la inyeccion de la
	 * dependencia la cubre SpringFramework
	 * 
	 * @param feriaDecDistribucionService
	 */
	public void setFeriaDecDistribucionService(
			IFeriaDecDistribucionService feriaDecDistribucionService) {
		this.feriaDecDistribucionService = feriaDecDistribucionService;
	}

	// --------------------------------------------------------------------
	// --- getters and setters end()
	// --------------------------------------------------------------------

}
